const { option } = require("@dcloudio/vue-cli-plugin-uni/packages/postcss/tags")
import store from "@/store";
const baseURL = ""

//请求拦截器需要做的事情
const interceptor = {
    //invoke 函数 拦截前触发
    invoke(args) {
        //添加加载动画
        uni.showLoading({
            title: '加载中',
            mask: true
        })
        //判断请求接口的基地址是否为http开头
        args.url = baseURL + args.url
        //请求头
        if (store.state.user.token) {
            args.header = {
                ...args.header,
                //添加请求token
                "Blade-Auth": 'bearer ' + store.state.user.token,
                Authorization: 'Basic c2FiZXI6c2FiZXJfc2VjcmV0'
            }
        }

    },
    //完成时，关闭加载动画
    complete(res) {
        uni.hideLoading()
    }
}

//uni的请求拦截器
//意思为，只要是request请求就先进行拦截
uni.addInterceptor('request', interceptor)
//意思为，只要是uploadFile请求就先进行拦截
uni.addInterceptor('uploadFile', interceptor)

//封装一个http函数，为了在发送请求成功后，数据的处理,相当于vue的响应拦截器
const http = async (options) => {
    const res = await uni.request(options)
    //如果请求状态码是200~300之间，就返回我们想要的数据
    if (res.statusCode >= 200 && res.statusCode < 300) {
        return res.data
    } else if (res.statusCode === 401) {
        //如果请求状态码是401 ，就返回登录页面
        store.commit('user/removeToken')
        return uni.navigateTo({ url: '/idaas-mobile-callback' })
    }

}
export default http